package com.typhoon.spring_shiro.utils;

import java.net.URI;
import java.net.URISyntaxException;

import org.apache.commons.lang3.StringUtils;

/**
 * url 工具类
 * 
 * @author Ternence
 * @date 2015年7月20日
 */
public class UrlUtils {


    // 格式化 url
    public static String normalize(String url) {
        URI uri;
        try {
            uri = new URI(url);

            return uri.normalize().toString();
        } catch (URISyntaxException e) {
            return url;
        }
    }

    public static String concat(String baseUrl, String path) {
        // if (path == null || path.length == 0) {
        // return baseUrl;
        // }

        if (baseUrl.endsWith("/") && path.startsWith("/")) {
            return baseUrl.substring(baseUrl.length() - 1, 1) + path;
        } else if ((!baseUrl.endsWith("/") && path.startsWith("/")) || (baseUrl.endsWith("/") && !path.startsWith("/"))) {
            return baseUrl + path;
        } else {
            return baseUrl + "/" + path;
        }
    }

    /**
     * 智能连接url，如果发现path已经有了前缀，则直接返回path，否则前面追加上baseUrl
     * 
     * @param baseUrl
     * @param path
     * @return
     * @date 2015年9月30日
     * @author Ternence
     */
    public static String smartConcat(String baseUrl, String path) {
        if (StringUtils.isEmpty(path)) {
            return null;
        }

        if (path.toLowerCase().startsWith("http")) {
            return path;
        } else {
            return UrlUtils.concat(baseUrl, path);
        }
    }
}
